package jp.seraph.jsmf.motion;

import java.util.List;

import jp.seraph.jsmf.motion.Motion;

/**
 * 
 * 
 */
public interface MotionManager {
    /**
     * このマネージャが保持する引数の名前を持つモーションを返します。
     * 
     * このメソッドが返すモーションを変更しても、マネージャに対して影響を与えてはいけません。
     * マネージャが管理するモーションを変更したい場合は、明示的にMotionを上書きする必要があります。
     * 
     * つまり、このメソッドの実装者は、このマネージャが保持するモーションのコピーを返す必要があります。
     * 
     * @param aMotionName
     * @return 引数の名前のモーションが存在するならそのモーション。 存在しないならnull
     */
    public Motion getMotion(String aMotionName);

    /**
     * このMotionManagerが管理しているMotionの名前のリストを返します。
     * 
     * @return
     */
    public List<String> getMotionNames();

    /**
     * 引数に与えられた名前を持つMotionをこのMotionManagerが管理しているかどうかを返します。
     * 
     * @param aMotionName
     * @return 管理していればtrue
     */
    public boolean containsMotion(String aMotionName);
}
